/*
 * TextOperator.h
 *
 *  Created on: 19/10/2011
 *      Author: Nestor Huallpa
 */


/*  Puntuacion en UTF-8
 *  C3 Marca caracter especial

	Caracter especial
	áàäéèëíì
	ïóòöúùüñ
	ÁÀÄÉÈËÍÌ
	ÏÓÒÖÚÙÜÑ
	çÇ

	Hexa del caracter
	A1, A0, A4, A9, A8, AB, AD, AC
	AF, B3, B2, B6, BA, B9, BC, B1
	81, 80, 84, 89, 88, 8B, 8D, 8C
	8F, 93, 92, 96, 9A, 99, 9C, 91
	A7, 87
 ***/
#ifndef TEXTOPERATOR_H_
#define TEXTOPERATOR_H_
#include <string>
#include <cstring>
#include <sstream>
#include <iostream>
#include "../../estructuras/lista/Lista.h"

#define CANT_CHAR_PUNTUADOS  34

static const unsigned char
hexChar[CANT_CHAR_PUNTUADOS] = {0xA1, 0xA0, 0xA4, 0xA9, 0xA8, 0xAB, 0xAD, 0xAC,
								0xAF, 0xB3, 0xB2, 0xB6, 0xBA, 0xB9, 0xBC, 0xB1,
								0x81, 0x80, 0x84, 0x89, 0x88, 0x8B, 0x8D, 0x8C,
								0x8F, 0x93, 0x92, 0x96, 0x9A, 0x99, 0x9C, 0x91,
								0xA7, 0x87};
static const char
resChar[CANT_CHAR_PUNTUADOS] = {'a', 'a', 'a', 'e', 'e', 'e', 'i', 'i',
								'i', 'o', 'o', 'o', 'u', 'u', 'u', 'n',
								'A', 'A', 'A', 'E', 'E', 'E', 'I', 'I',
								'I', 'O', 'O', 'O', 'U', 'U', 'U', 'N',
								'c', 'C'};

static const unsigned char k_marcaPuntuacion = 0xc3;

class TextOperator {


public:
	TextOperator();

	std::string mayus2Minuscula(std::string& termino);
	std::string quitarAcentos(std::string& termino);
	void split(std::string& str, std::string& delim, Lista<std::string> &results);

	virtual ~TextOperator();


private:
	/*
	 * @param caracterSegundo		Recibe el segundo byte del caracter puntuado (UTF-8)
	 * @return caracterSimple 		Es el equivalente en codigo ASCII simple
	 * */
	char puntuado2simple(char c);
};

#endif /* TEXTOPERATOR_H_ */
